package com.wkk.yuli.config;

/**
 * @author : WangKeKe
 * @date : 2020/9/24 11:41
 * Description : JVM缓存配置文件
 * - 设为static
 * 1.被static所修饰的变量或者方法会储存在数据共享区;
 * 2.被static修饰后的成员变量只有一份！
 */

public class ContainerConfig {

    /**
     * 容器上限
     */
    public static final Integer UPPER_LIMIT_SIZE = 1024;

    /**
     * 清除策略
     * LRU(最近最少使用)、FIFO(先进先出)、LFU(最近最不常用)、SOFT(软引用)、WEAK(弱引用)
     * LRU：Least Recently Used的缩写最近最少使用，移除最长时间不被使用的对象；常见的使用LinkedHashMap来实现，也是很多本地缓存默认使用的策略；
     * FIFO：先进先出，按对象进入缓存的顺序来移除它们；常见使用队列Queue来实现；
     * LFU：Least Frequently Used的缩写大概也是最近最少使用的意思，和LRU有点像；区别点在LRU的淘汰规则是基于访问时间，而LFU是基于访问次数的
     * SOFT：软引用基于垃圾回收器状态和软引用规则移除对象；常见使用SoftReference来实现；
     * WEAK：弱引用更积极地基于垃圾收集器状态和弱引用规则移除对象；常见使用WeakReference来实现；
     */
    public static final String CLEAR_POLICY = "FIFO";

    /**
     * 过期清除策略
     * 主动 - ACTIVE - 开启定时任务移除 -
     * 被动 - PASSIVE - 懒删除 直到访问时才确定是否删除
     */
    public static final String EXPIRE_PURGE_POLICY = "PASSIVE";

    /**
     * 主动任务移除 - cron表达式 - 每10秒进行一次判定
     */
    public static final String EXPIRE_PURGE_POLICY_CRON = "0/10 * * * * ?";
    public static final String EXPIRE_PURGE_POLICY_JOB_CLASS_NAME = "com.wkk.yuli.job.RemoveInvalidKeyJob";
    /**
     * - 如果项目启动，则先读取文件内的信息 -并加入容器中
     * 是否开启持久化
     * OPEN 开启
     * CLOSE 关闭
     */
    public static final String PERSISTENCE_STATUS = "OPEN";

    /**
     * 持久化策略
     * TIME 每几秒
     * FREQUENCY 每次
     */
    public static final String PERSISTENCE_POLICY = "FREQUENCY";

    /**
     * 持久化策略TIME - cron表达式 - 每2秒进行一次判定
     */
    public static final String PERSISTENCE_POLICY_CRON = "0/2 * * * * ?";
    public static final String PERSISTENCE_POLICY_JOB_CLASS_NAME = "com.wkk.yuli.job.PersistenceYuLiJob";
    /**
     * 持久化文件名称
     */
    public static final String PERSISTENCE_FILE_NAME = "yl.txt";

    /**
     * 持久化文件地址
     */
    public static final String PERSISTENCE_FILE_LOCATION = "D:\\";


}
